// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_EVENTS_KEYCODES_KEYBOARD_CODES_WIN_H_
#define UI_EVENTS_KEYCODES_KEYBOARD_CODES_WIN_H_

#include <ime.h>
#include <windows.h>

namespace ui {

enum KeyboardCode {
    VKEY_BACK = VK_BACK,
    VKEY_TAB = VK_TAB,
    VKEY_CLEAR = VK_CLEAR,
    VKEY_RETURN = VK_RETURN,
    VKEY_SHIFT = VK_SHIFT,
    VKEY_CONTROL = VK_CONTROL,
    VKEY_MENU = VK_MENU, // a.k.a. ALT
    VKEY_PAUSE = VK_PAUSE,
    VKEY_CAPITAL = VK_CAPITAL,
    VKEY_KANA = VK_KANA,
    VKEY_HANGUL = VK_HANGUL,
    VKEY_JUNJA = VK_JUNJA,
    VKEY_FINAL = VK_FINAL,
    VKEY_HANJA = VK_HANJA,
    VKEY_KANJI = VK_KANJI,
    VKEY_ESCAPE = VK_ESCAPE,
    VKEY_CONVERT = VK_CONVERT,
    VKEY_NONCONVERT = VK_NONCONVERT,
    VKEY_ACCEPT = VK_ACCEPT,
    VKEY_MODECHANGE = VK_MODECHANGE,
    VKEY_SPACE = VK_SPACE,
    VKEY_PRIOR = VK_PRIOR,
    VKEY_NEXT = VK_NEXT,
    VKEY_END = VK_END,
    VKEY_HOME = VK_HOME,
    VKEY_LEFT = VK_LEFT,
    VKEY_UP = VK_UP,
    VKEY_RIGHT = VK_RIGHT,
    VKEY_DOWN = VK_DOWN,
    VKEY_SELECT = VK_SELECT,
    VKEY_PRINT = VK_PRINT,
    VKEY_EXECUTE = VK_EXECUTE,
    VKEY_SNAPSHOT = VK_SNAPSHOT,
    VKEY_INSERT = VK_INSERT,
    VKEY_DELETE = VK_DELETE,
    VKEY_HELP = VK_HELP,
    VKEY_0 = '0',
    VKEY_1 = '1',
    VKEY_2 = '2',
    VKEY_3 = '3',
    VKEY_4 = '4',
    VKEY_5 = '5',
    VKEY_6 = '6',
    VKEY_7 = '7',
    VKEY_8 = '8',
    VKEY_9 = '9',
    VKEY_A = 'A',
    VKEY_B = 'B',
    VKEY_C = 'C',
    VKEY_D = 'D',
    VKEY_E = 'E',
    VKEY_F = 'F',
    VKEY_G = 'G',
    VKEY_H = 'H',
    VKEY_I = 'I',
    VKEY_J = 'J',
    VKEY_K = 'K',
    VKEY_L = 'L',
    VKEY_M = 'M',
    VKEY_N = 'N',
    VKEY_O = 'O',
    VKEY_P = 'P',
    VKEY_Q = 'Q',
    VKEY_R = 'R',
    VKEY_S = 'S',
    VKEY_T = 'T',
    VKEY_U = 'U',
    VKEY_V = 'V',
    VKEY_W = 'W',
    VKEY_X = 'X',
    VKEY_Y = 'Y',
    VKEY_Z = 'Z',
    VKEY_LWIN = VK_LWIN,
    VKEY_COMMAND = VKEY_LWIN, // Provide the Mac name for convenience.
    VKEY_RWIN = VK_RWIN,
    VKEY_APPS = VK_APPS,
    VKEY_SLEEP = VK_SLEEP,
    VKEY_NUMPAD0 = VK_NUMPAD0,
    VKEY_NUMPAD1 = VK_NUMPAD1,
    VKEY_NUMPAD2 = VK_NUMPAD2,
    VKEY_NUMPAD3 = VK_NUMPAD3,
    VKEY_NUMPAD4 = VK_NUMPAD4,
    VKEY_NUMPAD5 = VK_NUMPAD5,
    VKEY_NUMPAD6 = VK_NUMPAD6,
    VKEY_NUMPAD7 = VK_NUMPAD7,
    VKEY_NUMPAD8 = VK_NUMPAD8,
    VKEY_NUMPAD9 = VK_NUMPAD9,
    VKEY_MULTIPLY = VK_MULTIPLY,
    VKEY_ADD = VK_ADD,
    VKEY_SEPARATOR = VK_SEPARATOR,
    VKEY_SUBTRACT = VK_SUBTRACT,
    VKEY_DECIMAL = VK_DECIMAL,
    VKEY_DIVIDE = VK_DIVIDE,
    VKEY_F1 = VK_F1,
    VKEY_F2 = VK_F2,
    VKEY_F3 = VK_F3,
    VKEY_F4 = VK_F4,
    VKEY_F5 = VK_F5,
    VKEY_F6 = VK_F6,
    VKEY_F7 = VK_F7,
    VKEY_F8 = VK_F8,
    VKEY_F9 = VK_F9,
    VKEY_F10 = VK_F10,
    VKEY_F11 = VK_F11,
    VKEY_F12 = VK_F12,
    VKEY_F13 = VK_F13,
    VKEY_F14 = VK_F14,
    VKEY_F15 = VK_F15,
    VKEY_F16 = VK_F16,
    VKEY_F17 = VK_F17,
    VKEY_F18 = VK_F18,
    VKEY_F19 = VK_F19,
    VKEY_F20 = VK_F20,
    VKEY_F21 = VK_F21,
    VKEY_F22 = VK_F22,
    VKEY_F23 = VK_F23,
    VKEY_F24 = VK_F24,
    VKEY_NUMLOCK = VK_NUMLOCK,
    VKEY_SCROLL = VK_SCROLL,
    VKEY_LSHIFT = VK_LSHIFT,
    VKEY_RSHIFT = VK_RSHIFT,
    VKEY_LCONTROL = VK_LCONTROL,
    VKEY_RCONTROL = VK_RCONTROL,
    VKEY_LMENU = VK_LMENU,
    VKEY_RMENU = VK_RMENU,
    VKEY_BROWSER_BACK = VK_BROWSER_BACK,
    VKEY_BROWSER_FORWARD = VK_BROWSER_FORWARD,
    VKEY_BROWSER_REFRESH = VK_BROWSER_REFRESH,
    VKEY_BROWSER_STOP = VK_BROWSER_STOP,
    VKEY_BROWSER_SEARCH = VK_BROWSER_SEARCH,
    VKEY_BROWSER_FAVORITES = VK_BROWSER_FAVORITES,
    VKEY_BROWSER_HOME = VK_BROWSER_HOME,
    VKEY_VOLUME_MUTE = VK_VOLUME_MUTE,
    VKEY_VOLUME_DOWN = VK_VOLUME_DOWN,
    VKEY_VOLUME_UP = VK_VOLUME_UP,
    VKEY_MEDIA_NEXT_TRACK = VK_MEDIA_NEXT_TRACK,
    VKEY_MEDIA_PREV_TRACK = VK_MEDIA_PREV_TRACK,
    VKEY_MEDIA_STOP = VK_MEDIA_STOP,
    VKEY_MEDIA_PLAY_PAUSE = VK_MEDIA_PLAY_PAUSE,
    VKEY_MEDIA_LAUNCH_MAIL = 0xB4,
    VKEY_MEDIA_LAUNCH_MEDIA_SELECT = 0xB5,
    VKEY_MEDIA_LAUNCH_APP1 = 0xB6,
    VKEY_MEDIA_LAUNCH_APP2 = 0xB7,
    VKEY_OEM_1 = VK_OEM_1,
    VKEY_OEM_PLUS = VK_OEM_PLUS,
    VKEY_OEM_COMMA = VK_OEM_COMMA,
    VKEY_OEM_MINUS = VK_OEM_MINUS,
    VKEY_OEM_PERIOD = VK_OEM_PERIOD,
    VKEY_OEM_2 = VK_OEM_2,
    VKEY_OEM_3 = VK_OEM_3,
    VKEY_OEM_4 = VK_OEM_4,
    VKEY_OEM_5 = VK_OEM_5,
    VKEY_OEM_6 = VK_OEM_6,
    VKEY_OEM_7 = VK_OEM_7,
    VKEY_OEM_8 = VK_OEM_8,
    VKEY_OEM_102 = VK_OEM_102,
    VKEY_PROCESSKEY = VK_PROCESSKEY,
    VKEY_PACKET = VK_PACKET,
    VKEY_DBE_SBCSCHAR = VK_DBE_SBCSCHAR,
    VKEY_DBE_DBCSCHAR = VK_DBE_DBCSCHAR,
    VKEY_ATTN = VK_ATTN,
    VKEY_CRSEL = VK_CRSEL,
    VKEY_EXSEL = VK_EXSEL,
    VKEY_EREOF = VK_EREOF,
    VKEY_PLAY = VK_PLAY,
    VKEY_ZOOM = VK_ZOOM,
    VKEY_NONAME = VK_NONAME,
    VKEY_PA1 = VK_PA1,
    VKEY_OEM_CLEAR = VK_OEM_CLEAR,
    VKEY_UNKNOWN = 0,

    // Windows does not have a specific key code for AltGr. We use the unused
    // VK_OEM_AX to represent AltGr, matching the behaviour of Firefox on Linux.
    VKEY_ALTGR = VK_OEM_AX,
};

} // namespace ui

#endif // UI_EVENTS_KEYCODES_KEYBOARD_CODES_WIN_H_
